MongoDB এবং JavaScript এর মধ্যে ইন্টিগ্রেশন খুবই গুরুত্বপূর্ণ, কারণ MongoDB JSON-এর মতো ডকুমেন্ট স্টোর ব্যবহার করে এবং JavaScript এর অ্যাসিনক্রোনাস প্রকৃতির কারণে MongoDB এর সাথে সহজেই কাজ করা যায়। MongoDB JavaScript এর সাথে সংযুক্ত হতে পারে Node.js ব্যবহার করে, যা MongoDB ডেটাবেসের সাথে যোগাযোগের জন্য একটি জনপ্রিয় এবং শক্তিশালী পরিবেশ।
এখানে MongoDB এবং JavaScript এর (বিশেষ করে Node.js) ইন্টিগ্রেশন সম্পর্কে আলোচনা করা হলো:
MongoDB এবং JavaScript এর মধ্যে সংযোগ স্থাপনের জন্য Node.js ব্যবহার করা হয়, কারণ এটি একটি JavaScript রানটাইম পরিবেশ যা সার্ভার সাইড অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়।
প্রথমে, Node.js আপনার সিস্টেমে ইনস্টল থাকতে হবে। আপনি Node.js অফিসিয়াল ওয়েবসাইট থেকে এটি ডাউনলোড এবং ইনস্টল করতে পারেন: Node.js Official Site
MongoDB ডেটাবেসে JavaScript (Node.js) এর মাধ্যমে কাজ করার জন্য, MongoDB এর অফিসিয়াল Node.js ড্রাইভার mongodb
প্যাকেজটি ইনস্টল করতে হবে। আপনি npm ব্যবহার করে এটি ইনস্টল করতে পারেন:
npm install mongodb
Node.js এবং MongoDB এর মধ্যে সংযোগ স্থাপনের জন্য প্রথমে mongodb
প্যাকেজটি ব্যবহার করা হয়। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেটি MongoDB সার্ভারে সংযোগ স্থাপন করে এবং একটি ডেটাবেসে কাজ করে।
const { MongoClient } = require("mongodb");
// MongoDB URL
const url = "mongodb://localhost:27017"; // অথবা MongoDB Atlas URL
const dbName = "testDB";
// MongoDB এ সংযোগ স্থাপন করা
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(client => {
console.log("Connected to MongoDB");
// ডেটাবেস নির্বাচন
const db = client.db(dbName);
// ডেটাবেসের একটি কালেকশন নির্বাচন
const collection = db.collection("users");
// কিছু ডেটা ইনসার্ট করা
collection.insertOne({ name: "John Doe", age: 30 })
.then(result => {
console.log(`Inserted ${result.insertedCount} document`);
})
.catch(error => console.error(error));
// MongoDB সংযোগ বন্ধ করা
client.close();
})
.catch(error => console.error("Failed to connect to MongoDB", error));
এই কোডটি MongoDB এর testDB
ডেটাবেসে users
কালেকশনে একটি ডকুমেন্ট ইনসার্ট করে।
MongoDB ডেটাবেস থেকে ডেটা পড়তে, find()
মেথড ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ডেটাবেস থেকে ডেটা পড়া হয়েছে:
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(client => {
const db = client.db(dbName);
const collection = db.collection("users");
// MongoDB থেকে ডেটা রিড
collection.find({ age: { $gte: 30 } }).toArray()
.then(users => {
console.log("Users found:", users);
})
.catch(error => console.error(error));
client.close();
})
.catch(error => console.error("Failed to connect to MongoDB", error));
এই কোডটি age
ফিল্ডে ৩০ বা তার বেশি বয়সের ব্যবহারকারীদের নির্বাচন করবে।
MongoDB তে ডেটা আপডেট করতে updateOne()
বা updateMany()
মেথড ব্যবহার করা হয়। উদাহরণস্বরূপ:
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(client => {
const db = client.db(dbName);
const collection = db.collection("users");
// MongoDB ডেটা আপডেট
collection.updateOne({ name: "John Doe" }, { $set: { age: 31 } })
.then(result => {
console.log(`${result.modifiedCount} document updated`);
})
.catch(error => console.error(error));
client.close();
})
.catch(error => console.error("Failed to connect to MongoDB", error));
এটি "John Doe" নামক ব্যবহারকারীর বয়স আপডেট করবে।
MongoDB তে ডেটা মুছতে deleteOne()
বা deleteMany()
মেথড ব্যবহার করা হয়। উদাহরণ:
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(client => {
const db = client.db(dbName);
const collection = db.collection("users");
// MongoDB ডেটা ডিলিট
collection.deleteOne({ name: "John Doe" })
.then(result => {
console.log(`${result.deletedCount} document deleted`);
})
.catch(error => console.error(error));
client.close();
})
.catch(error => console.error("Failed to connect to MongoDB", error));
এটি "John Doe" নামক ব্যবহারকারীকে ডিলিট করবে।
MongoDB তে aggregation হল ডেটার উপর জটিল অপারেশন চালানোর জন্য ব্যবহৃত একটি শক্তিশালী ফিচার। এটি ব্যবহারকারীদের ডেটার উপর বিভিন্ন ধরনের গাণিতিক, গ্রুপিং, ফিল্টারিং এবং অন্যান্য অপারেশন করতে সক্ষম করে। নিচে একটি সাধারণ অ্যাগ্রিগেশন উদাহরণ দেওয়া হলো:
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(client => {
const db = client.db(dbName);
const collection = db.collection("users");
// MongoDB aggregation example
collection.aggregate([
{ $match: { age: { $gte: 30 } } },
{ $group: { _id: "$age", total: { $sum: 1 } } }
])
.toArray()
.then(results => {
console.log("Aggregation Results:", results);
})
.catch(error => console.error(error));
client.close();
})
.catch(error => console.error("Failed to connect to MongoDB", error));
এটি age
ফিল্ডে ৩০ বা তার বেশি বয়সের ব্যবহারকারীদের গ্রুপ করবে এবং তাদের মোট সংখ্যা নির্ধারণ করবে।
MongoDB Atlas হলো MongoDB এর ম্যানেজড ক্লাউড সার্ভিস যা MongoDB ডেটাবেস পরিচালনার জন্য অত্যন্ত সুবিধাজনক। JavaScript (Node.js) দিয়ে MongoDB Atlas এ সংযোগ করার জন্য নিচের কোডটি ব্যবহার করা হয়:
const { MongoClient } = require('mongodb');
const url = 'mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority';
const dbName = 'myDatabase';
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(client => {
const db = client.db(dbName);
console.log('Connected to MongoDB Atlas');
// Perform MongoDB operations here
client.close();
})
.catch(error => console.error('Error connecting to MongoDB Atlas', error));
এই কোডটি MongoDB Atlas ক্লাস্টারে সংযোগ স্থাপন করবে এবং আপনি MongoDB ক্লাউডে ডেটা পরিচালনা করতে পারবেন।
MongoDB এবং JavaScript (বিশেষ করে Node.js) এর ইন্টিগ্রেশন MongoDB ডেটাবেসের সাথে খুবই কার্যকরী। MongoDB Node.js ড্রাইভার এবং MongoDB Atlas ব্যবহার করে আপনি সহজেই MongoDB ডেটাবেসে ডেটা ইন্সার্ট, রিড, আপডেট এবং ডিলিট করতে পারেন। এছাড়াও, অ্যাগ্রিগেশন এবং অন্যান্য জটিল ডেটাবেস অপারেশন সহজেই JavaScript ব্যবহার করে MongoDB তে কার্যকরভাবে করা সম্ভব।
MongoDB এবং Node.js একত্রে কাজ করতে সক্ষম এমন একটি শক্তিশালী টেকনোলজি কম্বিনেশন তৈরি করে। Node.js এর সাথে MongoDB ব্যবহারের জন্য MongoDB এর জন্য অফিসিয়াল Node.js ড্রাইভার Mongoose ব্যবহার করা হয়। Mongoose একটি ODM (Object Data Modeling) লাইব্রেরি যা MongoDB ডেটাবেসের সাথে সহজভাবে ইন্টারঅ্যাক্ট করতে সহায়তা করে এবং ডেটা মডেলিং, ভ্যালিডেশন, এবং কুয়েরি অপারেশনগুলোকে সহজ করে তোলে।
MongoDB এবং Node.js একত্রে ব্যবহারের জন্য mongoose লাইব্রেরি ব্যবহারের উপকারিতা হলো সহজ ডেটাবেস অপারেশন, স্কিমা ডিফাইনেশন, এবং অ্যাসিনক্রোনাস অপারেশনগুলোর সহজ ম্যানেজমেন্ট।
এখানে MongoDB এবং Node.js এর সাথে কাজ করার জন্য প্রয়োজনীয় ধাপগুলো দেওয়া হল:
প্রথমে Node.js এবং MongoDB ইনস্টল করতে হবে:
এছাড়া, Node.js প্রকল্পে MongoDB এর সাথে যোগাযোগ করতে mongoose লাইব্রেরি ব্যবহার করতে হবে।
Mongoose লাইব্রেরি MongoDB এর সাথে সহজে সংযোগ স্থাপন করতে ব্যবহৃত হয়। Mongoose ইনস্টল করতে:
npm install mongoose
এখন Node.js এর মাধ্যমে MongoDB ডেটাবেসে সংযোগ করার জন্য mongoose ব্যবহার করা হবে।
// mongoose লাইব্রেরি অন্তর্ভুক্ত করুন
const mongoose = require('mongoose');
// MongoDB এর URI দিয়ে সংযোগ করুন
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
console.log('MongoDB Connected Successfully');
})
.catch((err) => {
console.log('MongoDB Connection Error: ', err);
});
এখানে mongodb://localhost:27017/mydatabase
হল MongoDB এর URI যেখানে mydatabase
আপনার ডেটাবেসের নাম।
Mongoose এর সাহায্যে MongoDB ডেটাবেসে ডকুমেন্টের স্ট্রাকচার (স্কিমা) তৈরি করা যায়। একটি মডেল তৈরি করতে, প্রথমে একটি স্কিমা তৈরি করতে হবে, তারপর সেই স্কিমা থেকে মডেল তৈরি করা হয়।
// mongoose লাইব্রেরি অন্তর্ভুক্ত করুন
const mongoose = require('mongoose');
// Schema তৈরি করুন
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
age: {
type: Number,
required: true
},
email: {
type: String,
required: true,
unique: true
}
});
// Model তৈরি করুন
const User = mongoose.model('User', userSchema);
// একটি ডকুমেন্ট ইনসার্ট করুন
const newUser = new User({
name: 'John Doe',
age: 30,
email: 'johndoe@example.com'
});
newUser.save()
.then(() => console.log('User added successfully'))
.catch((err) => console.log('Error:', err));
এখানে userSchema
একটি MongoDB ডকুমেন্টের স্ট্রাকচার নির্ধারণ করে এবং User
মডেলটি সেই স্কিমার উপর ভিত্তি করে ডেটাবেসে ডকুমেন্ট ইনসার্ট, আপডেট বা রিট্রিভ করতে সহায়তা করে।
Mongoose এর মাধ্যমে MongoDB ডেটাবেসে বিভিন্ন কুয়েরি অপারেশন করা যায়, যেমন ডেটা খোঁজা, আপডেট করা বা মুছে ফেলা।
// একাধিক ডকুমেন্ট খোঁজা
User.find({ age: { $gte: 30 } })
.then(users => console.log(users))
.catch(err => console.log('Error:', err));
// একক ডকুমেন্ট খোঁজা
User.findOne({ email: 'johndoe@example.com' })
.then(user => console.log(user))
.catch(err => console.log('Error:', err));
User.updateOne({ email: 'johndoe@example.com' }, { $set: { age: 31 } })
.then(() => console.log('User updated successfully'))
.catch(err => console.log('Error:', err));
User.deleteOne({ email: 'johndoe@example.com' })
.then(() => console.log('User deleted successfully'))
.catch(err => console.log('Error:', err));
MongoDB এবং Node.js একত্রে ব্যবহৃত হলে একটি উচ্চ পারফরম্যান্স এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করা সম্ভব। Mongoose লাইব্রেরি ব্যবহার করে MongoDB ডেটাবেসের সাথে সহজে সংযোগ স্থাপন, ডেটা মডেলিং, কুয়েরি অপারেশন এবং ডেটাবেস পরিচালনা করা যায়। MongoDB এবং Node.js এর ইন্টিগ্রেশন ওয়েব অ্যাপ্লিকেশন, রিয়েল-টাইম অ্যাপ্লিকেশন এবং বড় ডেটা অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী সমাধান প্রদান করে।
Mongoose হল MongoDB এর জন্য একটি জনপ্রিয় ORM (Object Relational Mapping) লাইব্রেরি, যা Node.js অ্যাপ্লিকেশনগুলিতে MongoDB এর সাথে সহজভাবে যোগাযোগ করার সুযোগ দেয়। Mongoose আপনাকে MongoDB ডেটাবেসের সাথে কাজ করতে সহজ, শক্তিশালী এবং নিরাপদ উপায় প্রদান করে, যেমন ডেটা মডেলিং, ভ্যালিডেশন, কোড প্রাকটিস, কাস্টম কুয়েরি ইত্যাদি।
Mongoose ব্যবহারের মাধ্যমে MongoDB ডেটাবেসের সাথে যোগাযোগকে আরও সিমপ্লিফাই করা যায়, এবং ডেটার কাঠামো এবং শর্তাবলী সহজভাবে পরিচালনা করা যায়।
প্রথমে আপনাকে Mongoose ইনস্টল করতে হবে। এটি Node.js এর জন্য একটি npm প্যাকেজ, এবং আপনি এটি npm
ব্যবহার করে ইনস্টল করতে পারেন।
npm install mongoose
এটি ইনস্টল করার পর, আপনি এটি আপনার অ্যাপ্লিকেশনে ব্যবহার করতে পারবেন।
Mongoose ব্যবহার করতে প্রথমেই MongoDB এর সাথে সংযোগ স্থাপন করতে হবে। এই কাজটি mongoose.connect()
ফাংশনের মাধ্যমে করা হয়।
সংযোগ উদাহরণ:
const mongoose = require('mongoose');
// MongoDB এর URI এবং কনফিগারেশন
mongoose.connect('mongodb://localhost:27017/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => {
console.log("MongoDB connected!");
})
.catch((err) => {
console.error("Connection failed", err);
});
এখানে mydatabase
হল MongoDB ডেটাবেসের নাম, এবং আপনি localhost
বা MongoDB Atlas বা অন্য কোন ক্লাউড ডেটাবেস URI ব্যবহার করতে পারেন।
Mongoose তে Schema হলো ডেটার কাঠামো নির্ধারণকারী ব্লুপ্রিন্ট। Model হলো স্কিমা ভিত্তিক ডেটাবেসের মধ্যে ডকুমেন্ট তৈরি এবং পরিচালনা করার জন্য ব্যবহৃত ক্লাস।
উদাহরণ:
const mongoose = require('mongoose');
// Schema তৈরি করা
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
age: { type: Number, required: true },
email: { type: String, required: true, unique: true }
});
// Model তৈরি করা
const User = mongoose.model('User', userSchema);
এখানে userSchema
একটি স্কিমা যা name
, age
, এবং email
ফিল্ডের জন্য ডেটার কাঠামো নির্ধারণ করে। তারপর User
মডেল তৈরি করা হয়েছে, যা User
ডকুমেন্টে CRUD অপারেশন করতে ব্যবহৃত হবে।
Mongoose ব্যবহার করে ডেটাবেসে ডেটা ইনসার্ট করা সহজ। আপনি যে মডেল তৈরি করেছেন, তার মাধ্যমে save()
ফাংশন ব্যবহার করে নতুন ডকুমেন্ট ইনসার্ট করতে পারেন।
উদাহরণ:
const newUser = new User({
name: "John Doe",
age: 30,
email: "johndoe@example.com"
});
newUser.save()
.then((user) => {
console.log("User saved:", user);
})
.catch((err) => {
console.error("Error saving user:", err);
});
এখানে newUser.save()
ব্যবহার করা হয়েছে নতুন User
ডকুমেন্ট MongoDB ডেটাবেসে ইনসার্ট করতে।
Mongoose তে ডেটা খোঁজা অনেক সহজ। আপনি find()
, findOne()
বা findById()
ব্যবহার করে MongoDB ডেটাবেস থেকে ডেটা অনুসন্ধান করতে পারেন।
উদাহরণ:
সব ডকুমেন্ট খোঁজা:
User.find()
.then((users) => {
console.log("Users:", users);
})
.catch((err) => {
console.error("Error finding users:", err);
});
একটি নির্দিষ্ট ডকুমেন্ট খোঁজা:
User.findOne({ name: "John Doe" })
.then((user) => {
console.log("Found user:", user);
})
.catch((err) => {
console.error("Error finding user:", err);
});
ID দিয়ে ডকুমেন্ট খোঁজা:
User.findById('605c72ef15320725f2b8bf1e')
.then((user) => {
console.log("Found user by ID:", user);
})
.catch((err) => {
console.error("Error finding user by ID:", err);
});
Mongoose তে ডেটা আপডেট করতে updateOne()
, updateMany()
, অথবা findOneAndUpdate()
ব্যবহার করা হয়।
উদাহরণ:
একটি ডকুমেন্ট আপডেট করা:
User.updateOne({ name: "John Doe" }, { $set: { age: 31 } })
.then(() => {
console.log("User updated!");
})
.catch((err) => {
console.error("Error updating user:", err);
});
একটি ডকুমেন্টের সম্পূর্ণ তথ্য আপডেট করা:
User.findOneAndUpdate({ name: "John Doe" }, { name: "Jane Doe", age: 32 }, { new: true })
.then((user) => {
console.log("Updated user:", user);
})
.catch((err) => {
console.error("Error updating user:", err);
});
Mongoose তে ডেটা মুছে ফেলতে deleteOne()
, deleteMany()
, অথবা findOneAndDelete()
ব্যবহার করা হয়।
উদাহরণ:
একটি ডকুমেন্ট মুছা:
User.deleteOne({ name: "John Doe" })
.then(() => {
console.log("User deleted!");
})
.catch((err) => {
console.error("Error deleting user:", err);
});
একাধিক ডকুমেন্ট মুছা:
User.deleteMany({ age: { $lt: 30 } })
.then(() => {
console.log("Users deleted!");
})
.catch((err) => {
console.error("Error deleting users:", err);
});
Mongoose তে মডেল ভ্যালিডেশন ব্যবহার করা হয় যাতে ডেটাবেসে ইনসার্ট হওয়ার আগে ডেটা সঠিকভাবে যাচাই করা যায়। এটি স্কিমাতে required
, min
, max
, enum
ইত্যাদি ভ্যালিডেশন ফিচার দ্বারা কাস্টমাইজ করা যায়।
উদাহরণ:
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
age: { type: Number, required: true, min: 18, max: 100 },
email: { type: String, required: true, unique: true, match: /.+\@.+\..+/ }
});
এখানে name
, age
, এবং email
ফিল্ডের জন্য ভ্যালিডেশন শর্ত সেট করা হয়েছে।
Mongoose ORM ব্যবহার করে MongoDB ডেটাবেসের সাথে সহজেই যোগাযোগ করা যায়। এটি ডেটা মডেলিং, ভ্যালিডেশন, কুয়েরি অপারেশন এবং CRUD কার্যক্রম সম্পাদন করতে সহায়তা করে। Mongoose MongoDB ডেটাবেসে ডেটার কাঠামো নির্ধারণ, ডেটা ইনসার্ট, আপডেট, খোঁজা, মুছে ফেলা, এবং শর্তাবলী বাস্তবায়ন সহজ করে তোলে।
MongoDB এবং Express.js এর সাহায্যে RESTful API তৈরি করা একটি জনপ্রিয় প্রক্রিয়া, যেটি ডেটাবেস পরিচালনা এবং ওয়েব অ্যাপ্লিকেশন তৈরির জন্য ব্যবহার করা হয়। MongoDB একটি NoSQL ডেটাবেস এবং Express.js হল Node.js এর জন্য একটি জনপ্রিয় ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক, যা REST API নির্মাণে সহজতা প্রদান করে।
এখানে MongoDB এবং Express.js ব্যবহার করে একটি REST API তৈরি করার সম্পূর্ণ গাইড দেওয়া হল।
আপনার প্রকল্পে MongoDB এবং Express.js ব্যবহার করতে হলে, আপনাকে প্রথমে Node.js এবং তার প্যাকেজ ম্যানেজার npm ইনস্টল করতে হবে। এরপর, MongoDB এবং Express.js এর জন্য কিছু প্যাকেজ ইনস্টল করতে হবে।
নতুন Node.js প্রকল্প তৈরি করুন: একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেখানে একটি নতুন package.json
ফাইল তৈরি করুন:
mkdir my-api
cd my-api
npm init -y
Express.js, MongoDB (Mongoose), Cors ইনস্টল করুন: Express.js, Mongoose (MongoDB এর জন্য ODM), এবং Cors প্যাকেজ ইনস্টল করুন:
npm install express mongoose cors
একটি server.js
ফাইল তৈরি করুন এবং Express.js অ্যাপ্লিকেশন সেটআপ করুন।
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
// Express অ্যাপ্লিকেশন তৈরি
const app = express();
const PORT = 3000;
// Middleware সেটআপ
app.use(cors());
app.use(express.json()); // JSON বডি পার্স করতে
// MongoDB কানেকশন
mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log("MongoDB Connected"))
.catch(err => console.log(err));
// API রাউটস
app.get('/', (req, res) => {
res.send('Hello World!');
});
// সার্ভার চালু করা
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
এটি একটি মৌলিক Express.js সার্ভার যা MongoDB এর সাথে কানেক্ট হবে এবং HTTP GET রিকোয়েস্ট হ্যান্ডেল করবে।
MongoDB ডেটাবেসে ডেটা সংরক্ষণ করার জন্য একটি মডেল তৈরি করতে হবে। উদাহরণস্বরূপ, একটি User মডেল তৈরি করা যাক।
models/User.js
ফাইল তৈরি করুন:
const mongoose = require('mongoose');
// User Schema তৈরি
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
age: { type: Number, required: true }
});
// User মডেল তৈরি
const User = mongoose.model('User', userSchema);
module.exports = User;
এখন, আমাদের RESTful API রাউটগুলি তৈরি করতে হবে, যাতে ডেটাবেসে ডেটা CRUD (Create, Read, Update, Delete) অপারেশন করতে পারি।
routes/userRoutes.js
ফাইল তৈরি করুন:
const express = require('express');
const router = express.Router();
const User = require('../models/User');
// 1. Create User (POST)
router.post('/users', async (req, res) => {
try {
const { name, email, age } = req.body;
const newUser = new User({ name, email, age });
await newUser.save();
res.status(201).json(newUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 2. Get All Users (GET)
router.get('/users', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 3. Get a Single User by ID (GET)
router.get('/users/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) {
return res.status(404).json({ message: 'User not found' });
}
res.json(user);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 4. Update User (PUT)
router.put('/users/:id', async (req, res) => {
try {
const { name, email, age } = req.body;
const updatedUser = await User.findByIdAndUpdate(
req.params.id,
{ name, email, age },
{ new: true }
);
res.json(updatedUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 5. Delete User (DELETE)
router.delete('/users/:id', async (req, res) => {
try {
const deletedUser = await User.findByIdAndDelete(req.params.id);
if (!deletedUser) {
return res.status(404).json({ message: 'User not found' });
}
res.json({ message: 'User deleted' });
} catch (err) {
res.status(400).json({ message: err.message });
}
});
module.exports = router;
server.js
ফাইলে আমরা userRoutes.js
রাউটগুলো সংযুক্ত করবো।
const userRoutes = require('./routes/userRoutes');
app.use('/api', userRoutes); // '/api' পাথে সমস্ত রাউট
সবকিছু প্রস্তুত হলে, এবার সার্ভারটি চালু করুন:
node server.js
এখন, আপনার API সার্ভারটি http://localhost:3000
এ চালু হবে এবং আপনি নিম্নলিখিত API রিকোয়েস্টগুলো করতে পারবেন:
/api/users
: নতুন ব্যবহারকারী তৈরি করুন।/api/users
: সমস্ত ব্যবহারকারী দেখুন।/api/users/:id
: একটি ব্যবহারকারী দেখুন তার ID এর মাধ্যমে।/api/users/:id
: একটি ব্যবহারকারী আপডেট করুন তার ID এর মাধ্যমে।/api/users/:id
: একটি ব্যবহারকারী মুছুন তার ID এর মাধ্যমে।Postman বা অন্য কোন HTTP ক্লায়েন্ট টুল ব্যবহার করে আপনার REST API পরীক্ষা করতে পারেন। আপনি প্রতিটি রিকোয়েস্টের মাধ্যমে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারবেন এবং ডেটার CRUD অপারেশন পরিচালনা করতে পারবেন।
MongoDB এবং Express.js এর সাথে একটি RESTful API তৈরি করা খুবই সহজ এবং কার্যকরী। MongoDB ডেটাবেসের সাথে সংযোগ স্থাপন, Mongoose দিয়ে মডেল তৈরি, এবং Express.js এর মাধ্যমে HTTP রাউট এবং কুয়েরি পরিচালনা করা হয়। এই পদ্ধতির মাধ্যমে আপনি দ্রুত একটি পূর্ণাঙ্গ API তৈরি করতে পারবেন যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে।
MongoDB তে CRUD (Create, Read, Update, Delete) অপারেশন এবং Aggregation অপারেশন JavaScript (Node.js) ব্যবহার করে সম্পন্ন করা যায়। MongoDB এর সাথে JavaScript (Node.js) ব্যবহার করার জন্য MongoDB Node.js Driver অথবা Mongoose লাইব্রেরি ব্যবহার করা হয়।
এখানে আমরা MongoDB Node.js Driver ব্যবহার করে MongoDB তে CRUD অপারেশন এবং Aggregation অপারেশন কিভাবে করা যায় তা দেখবো।
প্রথমে, MongoDB Node.js Driver ইনস্টল করতে হবে:
npm install mongodb
এটি MongoDB এর সাথে JavaScript ব্যবহার করতে সাহায্য করবে।
MongoDB তে ডেটা ইনসার্ট করতে insertOne()
বা insertMany()
ব্যবহার করা হয়। insertOne()
একটি একক ডকুমেন্ট ইনসার্ট করে, এবং insertMany()
একাধিক ডকুমেন্ট ইনসার্ট করে।
const { MongoClient } = require("mongodb");
async function createDocument() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const result = await collection.insertOne({
name: "John Doe",
age: 30,
email: "john.doe@example.com"
});
console.log("Document inserted with ID:", result.insertedId);
} finally {
await client.close();
}
}
createDocument();
async function createMultipleDocuments() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const result = await collection.insertMany([
{ name: "Alice", age: 25, email: "alice@example.com" },
{ name: "Bob", age: 28, email: "bob@example.com" }
]);
console.log(`${result.insertedCount} documents were inserted.`);
} finally {
await client.close();
}
}
createMultipleDocuments();
MongoDB তে ডেটা পড়তে find()
বা findOne()
ব্যবহার করা হয়। find()
সাধারণত একটি বা একাধিক ডকুমেন্ট ফেরত দেয়, এবং findOne()
একটি একক ডকুমেন্ট ফেরত দেয়।
async function readDocument() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const user = await collection.findOne({ name: "John Doe" });
console.log(user);
} finally {
await client.close();
}
}
readDocument();
async function readMultipleDocuments() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const users = await collection.find({}).toArray();
console.log(users);
} finally {
await client.close();
}
}
readMultipleDocuments();
MongoDB তে ডেটা আপডেট করতে updateOne()
বা updateMany()
ব্যবহার করা হয়। updateOne()
একটি একক ডকুমেন্ট আপডেট করে, এবং updateMany()
একাধিক ডকুমেন্ট আপডেট করে।
async function updateDocument() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const result = await collection.updateOne(
{ name: "John Doe" },
{ $set: { age: 35 } }
);
console.log(`${result.modifiedCount} document(s) updated.`);
} finally {
await client.close();
}
}
updateDocument();
async function updateMultipleDocuments() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const result = await collection.updateMany(
{ age: { $gte: 30 } },
{ $set: { status: "Senior" } }
);
console.log(`${result.modifiedCount} document(s) updated.`);
} finally {
await client.close();
}
}
updateMultipleDocuments();
MongoDB তে ডেটা মুছতে deleteOne()
বা deleteMany()
ব্যবহার করা হয়। deleteOne()
একটি একক ডকুমেন্ট মুছে ফেলে, এবং deleteMany()
একাধিক ডকুমেন্ট মুছে ফেলে।
async function deleteDocument() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const result = await collection.deleteOne({ name: "John Doe" });
console.log(`${result.deletedCount} document(s) deleted.`);
} finally {
await client.close();
}
}
deleteDocument();
async function deleteMultipleDocuments() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const result = await collection.deleteMany({ age: { $lt: 30 } });
console.log(`${result.deletedCount} document(s) deleted.`);
} finally {
await client.close();
}
}
deleteMultipleDocuments();
MongoDB তে অ্যাগ্রিগেশন অপারেশনগুলি ডেটার উপর জটিল বিশ্লেষণ করতে ব্যবহৃত হয়। অ্যাগ্রিগেশন পাইপলাইন ব্যবহার করে বিভিন্ন স্টেজে ডেটা প্রসেস করা হয়, যেমন গ্রুপিং, সোর্টিং, ফিল্টারিং ইত্যাদি।
async function aggregationExample() {
const client = new MongoClient("mongodb://localhost:27017");
try {
await client.connect();
const db = client.db("testDB");
const collection = db.collection("users");
const pipeline = [
{ $match: { age: { $gte: 30 } } },
{ $group: { _id: "$status", total: { $sum: 1 } } },
{ $sort: { total: -1 } }
];
const result = await collection.aggregate(pipeline).toArray();
console.log(result);
} finally {
await client.close();
}
}
aggregationExample();
এই উদাহরণে:
$match
: age
৩০ এর বেশি ডকুমেন্ট গুলো ফিল্টার করা হয়েছে।$group
: status
অনুযায়ী গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের জন্য মোট ডকুমেন্ট সংখ্যা গণনা করা হয়েছে।$sort
: মোট ডকুমেন্ট সংখ্যা অনুযায়ী সোর্ট করা হয়েছে।MongoDB তে CRUD (Create, Read, Update, Delete) অপারেশন এবং Aggregation অপারেশন JavaScript (Node.js) ব্যবহার করে খুব সহজেই করা যায়। MongoDB Node.js Driver ব্যবহার করে আপনি ডেটাবেসে ডেটা ইনসার্ট, আপডেট, পড়া এবং মুছতে পারবেন। অ্যাগ্রিগেশন পাইপলাইন ব্যবহার করে ডেটার উপর জটিল বিশ্লেষণ করতে এবং গ্রুপিং, সোর্টিং, ফিল্টারিং করতে পারবেন।
Read more